#include <head.h>


/*
文件1 文件2 文件3
3 4 5
关闭文件1


4 5 

打开文件4
3


*/

#define MAX_fds( nFds , fd ) (fd > nFds ? fd : nFds)


int main(int argc, char const *argv[])
{


    printf("准备启动\n");
    int fifo_1 = open( "fifo_1" , O_RDONLY);
    printf("文件1启动成功\n");

    int fifo_2 = open( "fifo_2" , O_RDONLY);
    printf("文件2启动成功\n");

    int fifo_3 = open( "fifo_3" , O_RDONLY);
    printf("文件3启动成功\n");

    char buf[128];
    printf("全部文件启动成功\n");

    int N_fds = 0;
    int fds_num = 0;

    // 创建集合
    fd_set read_set;        // 母本
    fd_set read_set_temp;   // 副本

    // 清空集合
    FD_ZERO(&read_set);

    // 在母本中添加集合
    FD_SET( fifo_1 , &read_set );
    N_fds = MAX_fds(N_fds , fifo_1 );

    FD_SET( fifo_2 , &read_set );
    N_fds = MAX_fds(N_fds , fifo_2 );

    FD_SET( fifo_3 , &read_set );
    N_fds = MAX_fds(N_fds , fifo_3 );


    while (1)
    {

        // 将母本 复制给 副本
        read_set_temp = read_set;

        // 检测那个文件描述符就绪
        select(N_fds + 1, &read_set_temp , NULL , NULL , NULL );

        // 读写文件
        for (size_t i = 3; i <= N_fds + 1; i++)
        {
            printf("aaaa\n");
            if ( 0 != FD_ISSET(i , &read_set_temp) )
            {
                printf("bbbb\n");
                memset(buf , 0 , sizeof(buf));
                read( i , buf , sizeof(buf));
                printf("fifo_%ld:%s\n" , i - 2 , buf  );
            }
        }

    }
    

    return 0;
}

